home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Sample Code / AOCE Sample Code / PowerTalk Access Modules / Sample SMSAM / SampleSMSAM Source / BuildingBlocks / NewDelete.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-28  |  2.2 KB  |  61 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        NewDelete.h
  3.  
  4.     Copyright:    © 1991-1994 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Part of the AOCE Sample SMSAM Package.  Consult the license
  8.     which came with this software for your specific legal rights.
  9.  
  10. */
  11.  
  12.  
  13.  
  14. #ifndef    __NEWDELETE__
  15. #define    __NEWDELETE__
  16.  
  17. #ifndef    __MEMORY__
  18. #include "Memory.h"
  19. #endif
  20.  
  21. #pragma push
  22. #pragma segment Main
  23.  
  24. extern Boolean ValidPtr ( const Ptr );
  25. extern Boolean ValidHandle ( const Handle );
  26. extern Boolean DisposeIfPtr ( Ptr );
  27. extern Boolean DisposeIfHandle ( Handle );
  28. extern void* operator new ( unsigned int, const void* );
  29.  
  30. #if defined ( debug ) || defined ( BLJTestTool )
  31.  
  32.     extern void* BLJFailIfNil ( const void* pointer, const char* fileName, unsigned long line );
  33.     extern Ptr AllocatePtr ( unsigned long, Boolean clear = false, Boolean fail = false, const char* file = nil, unsigned long line = 0 );
  34.     extern Handle AllocateHandle ( unsigned long, Boolean clear = false, Boolean fail = false, const char* file = nil, unsigned long line = 0 );
  35.     extern void DeallocatePtr( Ptr );
  36.     extern void DeallocateHandle ( Handle );
  37.     
  38.     #define FAILNewPtr(size)                ::AllocatePtr(size,false,true,__FILE__,__LINE__)
  39.     #define FAILNewPtrClear(size)            ::AllocatePtr(size,true,true,__FILE__,__LINE__)
  40.     #define FAILNewHandle(size)                ::AllocateHandle(size,false,true,__FILE__,__LINE__)
  41.     #define FAILNewHandleClear(size)        ::AllocateHandle(size,true,true,__FILE__,__LINE__)
  42.     
  43. #else
  44.  
  45.     extern void* BLJFailIfNil ( const void* pointer );
  46.     inline Ptr AllocatePtr ( unsigned long size, Boolean clear = false ) { return clear ? ::NewPtrClear(size) : ::NewPtr(size);}
  47.     inline Handle AllocateHandle ( unsigned long size, Boolean clear = false ) { return clear ? ::NewHandleClear(size) : ::NewHandle(size);}
  48.     inline void DeallocatePtr(Ptr p) {::DisposePtr(p);}
  49.     inline void DeallocateHandle(Handle h) {::DisposeHandle(h);}
  50.  
  51.     #define FAILNewPtr(size)                ((Ptr)BLJFailIfNil(::NewPtr(size)))
  52.     #define FAILNewPtrClear(size)            ((Ptr)BLJFailIfNil(::NewPtrClear(size)))
  53.     #define FAILNewHandle(size)                ((Handle)BLJFailIfNil(::NewHandle(size)))
  54.     #define FAILNewHandleClear(size)        ((Handle)BLJFailIfNil(::NewHandleClear(size)))
  55.  
  56. #endif    // !(debug || BLJTestTool)
  57.  
  58. #pragma pop
  59.  
  60. #endif    // __NEWDELETE__
  61.